1. Field of the Invention
The present invention is directed to computer systems; and more particularly, it is directed to the compositing and rendering of three-dimensional images from two-dimensional maps using computer systems.
2. Description of the Related Art
As the power and complexity of personal computer systems increase, graphics operations are increasingly being performed on these systems, often making use of dedicated graphics rendering devices referred to as graphics processing units (GPUs). As used herein, the terms “graphics processing unit” and “graphics processor” are used interchangeably. Although GPUs vary in their capabilities, they may typically be used to perform such tasks as rendering of two-dimensional (2D) graphical data, rendering of three-dimensional (3D) graphical data, accelerated rendering of graphical user interface (GUI) display elements, and digital video playback. A GPU may include various built-in and configurable structures for rendering digital images to an imaging device.
Digital images may include raster graphics, vector graphics, or a combination thereof. Raster graphics data (also referred to herein as bitmaps) may be stored and manipulated as a grid of individual picture elements called pixels. A bitmap may be characterized by its width and height in pixels and also by the number of bits per pixel. Commonly, a color bitmap defined in the RGB (red, green blue) color space may comprise between one and eight bits per pixel for each of the red, green, and blue channels. An alpha channel may be used to store additional data such as per-pixel transparency values.
Vector graphics data may be stored and manipulated as one or more geometric objects built with geometric primitives. The geometric primitives (e.g., points, lines, polygons, curves, and text characters) may be based upon mathematical equations to represent parts of vector graphics data in digital images. The geometric objects may typically be located in two-dimensional or three-dimensional space. To render vector graphics on raster-based imaging devices (e.g., most display devices and printers), the geometric objects are typically converted to raster graphics data in a process called rasterization.
Graphical data may often be expressed in a structured format that complies with a particular specification or model for representing such data. Instead of requiring application programs to describe every page as a full-resolution pixel array, a high-level imaging model may enable applications to describe the appearance of pages containing text, graphical shapes, and sampled images in terms of abstract graphical elements rather than directly in terms of device pixels. Such specifications and models may often be implemented across multiple computing platforms to facilitate the exchange of graphical data. The Adobe® PostScript® language, Adobe® Portable Document Format (PDF), and Adobe® Imaging Model, for example, include various structures and commands to describe complex two-dimensional graphical data including geometric models and bitmapped images.
Two-dimensional projection of graphical images, such as maps, tends to distort some data, making it harder to compare relative sizes or distances. For example, a Mercator projection is a very common 2D map projection, but it tends to make European and North American countries look much larger then their true size. In addition, some projections may not handle adjacent maps correctly, as distortion or error gradually creeps in. Therefore, 2D maps can be hard to view next to each other. Furthermore, local governments, planning commissions, public outreach, defense-related organizations, and other users may wish to view geospatial data in three dimensions. For example, this may become important for viewing data in context (e.g., as it would appear on the Earth's surface), or for more easily interpreting height data (e.g., 3D/height data may be important for evaluating line of sight, in some applications). However, true 3D map data is not typically available in a format that is compatible with document-based applications.